package cn.iocoder.yudao.module.system.service.a_article;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.a_article.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.a_article.ArticleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.a_article.ArticleDOReq;
import cn.iocoder.yudao.module.system.dal.dataobject.a_article.ArticleTempDO;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;


public interface ArticleService {

    /**
     * 新增文稿
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    String insertHybaseByArticle(ArticleReqVO createReqVO);

    /**
     * 获得图片分页
     *
     * @param pageReqVO 分页查询
     * @return 图片分页
     */

    PageResult<ArticlePageReqVO> getPage(ArticlePageReqVO pageReqVO);


    /**
     * 删除图片
     *
     * @param ids 编号
     */
    Boolean delete(String ids, String urls);

    /**
     * 根据id查询
     *
     * @param id 编号
     * @return
     */
    ArticleDO get(String id);

    /**
     * 更新文稿
     *
     * @param updateReqVO 更新信息
     */
    Boolean updateHybaseByArticle(ArticleReqVO updateReqVO);

    /**
     * 上传插图
     *
     * @param insertImage 插图文件
     */
    String uploadInset(MultipartFile insertImage);

    /**
     * 删除插图
     *
     * @param insetUrls 插图文件路径
     */
    Boolean deleteInset(String insetUrls);

    Map<String, Object> duplicate(ArticleDuplicateReqVO articleDuplicateReqVO);

    /**
     * 查询本月新增文稿数
     */
    long insertArticleByDay();

    /**
     * 新增文稿暂存
     *
     * @param createReqVO 文稿对象
     */
    Boolean insertArticleTemp(ArticleReqVO createReqVO);

    /**
     * 删除某文稿所有暂存数据
     *
     * @param ids 关联id
     */
    Boolean deleteArticleTemp(Long[] ids);

    /**
     * 获取最新暂存数据
     *
     * @param relevanceId 关联id
     */
    ArticleTempDO getArticleTemp(String relevanceId);

    /**
     * 修改送审状态
     *
     * @param id
     * @param reviewStatus
     * @return
     */
    Boolean updateReview(String id, Integer reviewStatus);

    /**
     * 资源库-图片
     *
     */
    PageResult<AticleRLPicturesPageReqVO> getRLPicturesPage(AticleRLPicturesPageReqVO pageReqVO);

    /**
     * 资源库-视频
     *
     */
    PageResult<AticleRLVideoPageReqVO> getRLVideoPage(AticleRLVideoPageReqVO pageReqVO);

    /**
     * 更新推送资源库状态
     */
    Boolean updateShare(String id, String shareStatus);

    /**
     * 更新推送资源库状态
     */
    Boolean updatePush(String id, String pushStatus);

    /**
     * 创建文稿查重模板
     */
    Boolean creatModel();

    /**
     * 文稿保存
     */
    Long save(ArticleDOReq articleDO);

    /**
     * 根据id删除
     *
     * @param ids 删除对象
     */
    Boolean delete(Long[] ids);

    /**
     * 获得分页
     *
     * @param pageVO 查询条件
     */
    PageResult<ArticleDO> selectPage(ArticlePageReqVO pageVO);
}
